package pe.gob.sedapal.scmultimedia.rcp.view.estadocuenta;

import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Text;

import pe.gob.sedapal.scmultimedia.config.ApplicationContext;
import pe.gob.sedapal.scmultimedia.domain.Numero;
import pe.gob.sedapal.scmultimedia.sessionbean.DataSessionBean;
import pe.gob.sedapal.scmultimedia.util.Constante;
import pe.gob.sedapal.scmultimedia.util.Messages;
import pe.gob.sedapal.scmultimedia.wb.swt.ResourceManager;
import pe.gob.sedapal.scmultimedia.wb.swt.SWTResourceManager;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.events.MouseTrackAdapter;

public class NumerosShell {
	
	
	private final Shell child;
	private Text txtNumero;	
	private Shell parent;
	private Table table;
	private DataSessionBean dataSessionBean;
	
	public BuscarDireccionView buscarDireccionView;	
	private Text txtFieldProvincia;
	private Text txtFieldDistrito;
	private Text txtFieldLocalidad;
	private Text txtFieldCalle;
	
	public NumerosShell(final Shell padre, BuscarDireccionView bdv) {
		dataSessionBean = (DataSessionBean)ApplicationContext.getBean(DataSessionBean.class);
		
	    parent = padre;
	    parent.setBackground(SWTResourceManager.getColor(173, 216, 230));
		parent.setBackgroundMode(SWT.INHERIT_DEFAULT);
		
	    buscarDireccionView = bdv;
	    child = new Shell(parent,SWT.APPLICATION_MODAL);
	    child.setBackgroundImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_FONDO_SEDAPAL));
	    child.setBackgroundMode(SWT.INHERIT_DEFAULT);
	    child.setSize(714, 484);
	    		    	
	    	txtNumero = new Text(child, SWT.BORDER);
	    	txtNumero.setEditable(false);
	    	txtNumero.setBounds(20, 445, 300, 27);
	    		    
	    		    Label lblProvincia = new Label(child, SWT.NONE);
	    		    lblProvincia.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblProvincia.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblProvincia.setBounds(10, 65, 82, 27);
	    		    lblProvincia.setText(Messages.numerosShell_etiqueta_provincia);
	    		    
	    		    Label lblDistrito = new Label(child, SWT.NONE);
	    		    lblDistrito.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblDistrito.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblDistrito.setBounds(10, 98, 70, 27);
	    		    lblDistrito.setText(Messages.numerosShell_etiqueta_distrito);
	    		    
	    		    Label lblLocalidad = new Label(child, SWT.NONE);
	    		    lblLocalidad.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblLocalidad.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblLocalidad.setBounds(10, 131, 82, 27);
	    		    lblLocalidad.setText(Messages.numerosShell_etiqueta_localidad);
	    		    
	    		    Label lblCalle = new Label(child, SWT.NONE);
	    		    lblCalle.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED, Constante.VALOR_FUENTE_GREEN, Constante.VALOR_FUENTE_BLUE));
	    		    lblCalle.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    lblCalle.setBounds(10, 164, 70, 27);
	    		    lblCalle.setText(Messages.numerosShell_etiqueta_calle);
	    		    
	    		    table = new Table(child, SWT.BORDER | SWT.FULL_SELECTION);
	    		    table.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
	    		    table.addMouseListener(new MouseAdapter() {
	    		    	@Override
	    		    	public void mouseDown(MouseEvent e) {
	    		    		int numeroSeleccionado = table.getSelectionIndex();
	    		    		Numero numeroTemporal = buscarDireccionView.getNumeros().get(numeroSeleccionado);
	    		    		txtNumero.setText(numeroTemporal.getNumPuerta().toString());
	    		    		//dataSessionBean.setNumero(buscarDireccionView.getNumeros().get(numeroSeleccionado));
	    		    		//txtNumero.setText(dataSessionBean.getNumero().getNumPuerta().toString());
	    		    	}
	    		    });
	    		    table.setBounds(35, 197, 604, 206);
	    		    table.setHeaderVisible(true);
	    		    table.setLinesVisible(true);
	    		    dibujarTabla();
	    		    
	    		    TableColumn tblclmnNewColumn = new TableColumn(table, SWT.NONE);
	    		    tblclmnNewColumn.setWidth(100);
	    		    tblclmnNewColumn.setText("Número");
	    		    
	    		    final Label btnAceptar = new Label(child, SWT.CENTER);
	    		    btnAceptar.addMouseTrackListener(new MouseTrackAdapter() {
	    		    	@Override
	    		    	public void mouseEnter(MouseEvent e) {
	    		    		btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_ON));
	    		    	}
	    		    	@Override
	    		    	public void mouseExit(MouseEvent e) {
	    		    		btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_OFF));
	    		    	}
	    		    });
	    		    btnAceptar.addMouseListener(new MouseAdapter() {
	    		    	@Override
	    		    	public void mouseDown(MouseEvent e) {
	    		    		if(table.getSelectionCount() > 0){
	    		    			establecerNumero();
		    		    		child.close();	    		    			
	    		    		}else{
	    		    			MessageDialog.openInformation(child, Constante.MSG_ERROR, Constante.MSG_SELECCIONAR_CALLE);
	    		    		}

	    		    	}
	    		    });
	    			btnAceptar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_ACEPTAR_OFF));
	    		    btnAceptar.setBounds(330, 410, 169, 58);
	    		    
    		    	final Label btnCerrar = new Label(child, SWT.CENTER);
    		    	btnCerrar.addMouseTrackListener(new MouseTrackAdapter() {
	    		    	@Override
	    		    	public void mouseEnter(MouseEvent e) {
	    		    		btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_ON));
	    		    	}
	    		    	@Override
	    		    	public void mouseExit(MouseEvent e) {
	    		    		btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_OFF));
	    		    	}
	    		    });    		    	
    		    	btnCerrar.addMouseListener(new MouseAdapter() {
    		    		@Override
    		    		public void mouseDown(MouseEvent e) {
    		    			//retornarTexto();
    		    			child.close();
    		    		}
    		    	});
    		    	btnCerrar.setImage(org.eclipse.wb.swt.ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_BOTON_REGRESAR_OFF));
    		    	btnCerrar.setBounds(505, 410, 169, 58);    		    	
    		    	
    		    	Label lblSeleccionarNmero = new Label(child, SWT.NONE);
    		    	lblSeleccionarNmero.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 16, SWT.BOLD | SWT.ITALIC));
    		    	lblSeleccionarNmero.setBounds(10, 10, 255, 27);
    		    	lblSeleccionarNmero.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED,Constante.VALOR_FUENTE_GREEN,Constante.VALOR_FUENTE_BLUE));
    		    	lblSeleccionarNmero.setText(Messages.numerosShell_titulo);
    		    	
    				Label imgLogo = new Label(child, SWT.NONE);
    				imgLogo.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_LOGO_SEDAPAL_INTERNO));
    				imgLogo.setBounds(555, 0, 192, 84);    	    		    	
    		    	
    		    	Label lblBarra = new Label(child, SWT.NONE);
    		    	lblBarra.setBounds(10, 51, 670, 8);
    				lblBarra.setImage(ResourceManager.getPluginImage("scmultimedia", Constante.RUTA_IMG_BARRA));
    				
    				txtFieldProvincia = new Text(child, SWT.BORDER);
    				txtFieldProvincia.setEditable(false);
    				txtFieldProvincia.setBounds(114, 65, 326, 27);
    				txtFieldProvincia.setText(dataSessionBean.getProvincia().getNomDepto());
    				
    				txtFieldDistrito = new Text(child, SWT.BORDER);
    				txtFieldDistrito.setEditable(false);
    				txtFieldDistrito.setBounds(114, 98, 326, 27);
    				txtFieldDistrito.setText(dataSessionBean.getDistrito().getNomMunic());
    				
    				txtFieldLocalidad = new Text(child, SWT.BORDER);
    				txtFieldLocalidad.setEditable(false);
    				txtFieldLocalidad.setBounds(114, 131, 326, 27);
    				txtFieldLocalidad.setText(dataSessionBean.getLocalidad().getNomLocal());
    				
    				txtFieldCalle = new Text(child, SWT.BORDER);
    				txtFieldCalle.setEditable(false);
    				txtFieldCalle.setBounds(114, 164, 326, 27);
    				txtFieldCalle.setText(dataSessionBean.getCalle().getNomCalle());
    				
    				Label lblNmero = new Label(child, SWT.NONE);
    				lblNmero.setFont(org.eclipse.wb.swt.SWTResourceManager.getFont("Ubuntu", 13, SWT.BOLD));
    				lblNmero.setForeground(org.eclipse.wb.swt.SWTResourceManager.getColor(Constante.VALOR_FUENTE_RED,Constante.VALOR_FUENTE_GREEN,Constante.VALOR_FUENTE_BLUE));
    				lblNmero.setBounds(20, 412, 82, 27);
    				lblNmero.setText(Messages.numerosShell_etiqueta_numero);
    				
	child.open();    
  }
	
	public void dibujarTabla(){
		TableItem item;

		table.removeAll();
		for (Numero numero : buscarDireccionView.getNumeros()) {
			item = new TableItem(table, SWT.NONE);
			item.setText(0, numero.getNumPuerta().toString());
		}
		table.setRedraw(true);		
	}
  
	public void establecerNumero(){
		dataSessionBean.setNumero(buscarDireccionView.obtenerNumeroPorNombre(txtNumero.getText()));
		buscarDireccionView.getTxtNumero().setText(dataSessionBean.getNumero().getNumPuerta().toString());
	}
}
